package love_list

// SwapList 虚拟节点是一方面，也有指针移动的思想,按步骤处理完，移动到下一组。第三个是head
func SwapList(head *SingleNode) *SingleNode {
	var dumy = &SingleNode{
		Next: head,
	}
	pre := dumy
	for head != nil && head.Next != nil {
		next := head.Next.Next

		pre.Next = head.Next
		head.Next.Next = head
		head.Next = next

		pre = head
		head = next
	}
	return dumy.Next
}

//三个关键点
// 首先虚拟节点，因为需要从前一个节点指向修改。
// 指针移动，pre，head向后移动
// dumy虚拟头指针不变，返回目标next
